package com.tsingteng.cosfun.utils;

import android.util.Log;

import com.tsingteng.cosfun.BuildConfig;
import com.tsingteng.cosfun.crashUtils.log.FileLogger;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

/**
 * 描述:日志打印工具类
 * 创建人: 肖利
 *时间: 2018/7/30
 * qq: (872179966)
 */
public class LogUtils {
    private static boolean sIs4Mock;

    public static void set4Mock(boolean forMock) {
        sIs4Mock = forMock;
    }

    public static void v(String msg) {
        LogUtils.v("NOTAG", msg);
    }

    /**
     * 以v标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void v(String tag, String msg) {
        if (sIs4Mock) {
            return;
        }

        if (BuildConfig.DEBUG) {
            android.util.Log.v(tag, msg);
        }
    }

    public static void d(String msg) {
        LogUtils.d("NOTAG", msg);
    }

    /**
     * 以d标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void d(String tag, String msg) {
        if (sIs4Mock) {
            return;
        }

        if (BuildConfig.DEBUG) {
            android.util.Log.d(tag, msg);
        }
        FileLogger.getActionLogger().write("[D]" + tag + " " + msg);
    }

    public static void i(String msg) {
        LogUtils.i("NOTAG", msg);
    }

    /**
     * 以i标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void i(String tag, String msg) {
        if (sIs4Mock) {
            return;
        }

        if (BuildConfig.DEBUG) {
            android.util.Log.i(tag, msg);
        }
        FileLogger.getActionLogger().write("[I]" + tag + " " + msg);
    }

    public static void w(String msg) {
        LogUtils.w("NOTAG", msg);
    }

    /**
     * 以w标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void w(String tag, String msg) {
        if (sIs4Mock) {
            return;
        }

        if (BuildConfig.DEBUG) {
            android.util.Log.w(tag, msg);
        }
        FileLogger.getActionLogger().write("[W]" + tag + " " + msg);
    }

    public static void e(String msg) {
        LogUtils.e("NOTAG", msg);
    }

    /**
     * 以e标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void e(String tag, String msg) {
        if (sIs4Mock) {
            return;
        }

        if (BuildConfig.DEBUG) {
            android.util.Log.e(tag, msg);
        }
        FileLogger.getErrorLogger().write("[E]" + tag + " " + msg);
    }

    /**
     * 以e标签打印log
     * @param tag 标签
     * @param msg 信息.
     */
    public static void e(String tag, String msg, Throwable t) {
        if (sIs4Mock) {
            return;
        }

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);
        t.printStackTrace(ps);

        if (BuildConfig.DEBUG) {
            android.util.Log.e(tag, msg, t);
            android.util.Log.e(tag, baos.toString());
        }
        FileLogger.getErrorLogger().write("[E]" + tag + " " + msg);
        FileLogger.getErrorLogger().write("[E]" + tag + " " + baos.toString());
    }
}
